iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
Modern Web

Willisの後端幼幼班系列 第 5

後端幼幼班Day5 Python篇 Decorator(裝飾器)基礎

  • 分享至 

  • xImage
  •  

大家好啊~我是Willis,今天要來介紹Python一個非常好用的工具 Decorator(裝飾器) ! (ᗒᗨᗕ)/

Decorator(裝飾器)

裝飾器本質上算是函數的一種,只是如果在程式碼中只使用函數來填寫的話,可能會使程式碼過於繁複,降低程式碼的可讀性,所以我們才會需要用 Decorator(裝飾器) 延伸原本已完成的函數,簡化程式碼。

定義裝飾器

def 裝飾器名稱(函數名稱):
    def wrapper():
        ...
    return wrapper

使用裝飾器 @裝飾器名稱

  • 程式碼 app.py
import random  # 導入random模組


def odd_fun(fun):
    def wrapper():
        num = fun()
        if (int)(num) % 2 != 0:
            print("{}判斷為奇數".format(num))
        else:
            print("{}判斷為偶數".format(num))
    return wrapper


@odd_fun
def random_fun():  # 定義使用函數
    input_num = random.randint(1, 10)  # 整數(int)隨機亂數1~10
    return input_num


random_fun()  # 呼叫使用函數
  • 執行結果
8判斷為偶數

9判斷為奇數

傳遞參數

  • 程式碼 app.py
import random


def odd_fun(fun):
    def wrapper(*args, **kwargs):  # 使用*args及**kwargs取得參數
        num = fun(*args, **kwargs)
        if (int)(num) % 2 != 0:
            print("{}判斷為奇數".format(num))
        else:
            print("{}判斷為偶數".format(num))
    return wrapper


@odd_fun
def random_fun(*args, **kwargs):  # 設定函數參數
    input_num = random.randint(*args, **kwargs)  # 整數(int)隨機亂數*args ~ **kwargs
    return input_num


random_fun(1, 100)  # 傳入參數
  • 執行結果
93判斷為奇數

78判斷為偶數

參考資料

https://www.youtube.com/watch?v=qc8hsxAK270&ab_channel=%E5%BD%AD%E5%BD%AD%E7%9A%84%E8%AA%B2%E7%A8%8B

結尾

Decorator(裝飾器)的基礎篇就到這邊,下一篇我會講關於裝飾器比較進階的東西,內容會有一點燒腦唷 ! σ ゚∀ ゚) ゚∀゚)σ


上一篇
後端幼幼班Day4 Python篇 Python基本語法 Part3
下一篇
後端幼幼班Day6 Python篇 Decorator(裝飾器)進階
系列文
Willisの後端幼幼班30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言